/*
 * Copyright (c) 2023 fred
 * Licensed under the Apache License,Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { Comment } from '../../nodes/Comment'
import { DocumentType } from '../../nodes/DocumentType'
import { Element } from '../../nodes/Element'
import { XmlDeclaration } from '../../nodes/XmlDeclaration'
import { Evaluator } from '../Evaluator'
export class EvaluatorIsEmpty extends Evaluator {
  public matches(root: Element, element: Element): boolean {
    let family = element.childNodes()
    for(let n of family) {
      // if (n instanceof TextNode) {
      //   return n.isBlank()
      // }
      if (!(n instanceof Comment || n instanceof XmlDeclaration || n instanceof DocumentType)) {
        return false
      }
    }
    return true
  }

  public toString(): string {
    return `:empty`
  }
}